Automatische Aufgabengenerierung [abapGit]
Dank des devtoberfestes habe ich diese Woche einiges über github gelernt. Ein cooles Feature möchte ich gerne mit euch teilen:
Github actions
Github actions können verwendet werden, um auf github Ereignisse reagieren zu können. Ein wichtiges Ereignis ist der Commit einer Datei (push).
TODO to Issue Action
Mit einer YAML-Definition kann man mit einer Action auf die Ereignisse reagieren. Ich habe im github Marketplace die Action TODO to issue action gefunden und einmal ausprobiert.
Mit dieser Action ist es möglich auf einen bestimmten Marker zu reagieren, der im Quelltext vorkommt. Sinnvoll ist im ABAP-Umfeld das Doppelte Anführungszeichen, dass einen Kommentar einleitet, gefolgt von dem Wort “TODO”. Findet der Workflow beim Einchecken (push) eines Sourcecodes diesen Marker, dann erstellt die Action automatisch ein Issue im github Repository.
Test Repository
Um das Ganze auszuprobieren, habe ich ein Testrepository im github angelegt: TODO to Issue.
Vorbereitungen
Um TODO to Action Issues in deinem Repository zu aktivieren, musst du zwei Dinge tun:
- Erstellen der Workflowdatei
- Anlegen des TODO Labeles
YAML-Workflowdatei
Um den Workflow einzurichten, brauchst du nur eine YML-Datei in dem Ordner .github/workflows erstellen. Wahrscheinlich existiert der Ordner noch nicht. Dann lege ihn einfach an.
Die Datei kann zum Beispiel wie folgt aussehen:
name: todo2issue on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@master - name: TODO to Issue uses: alstr/todo-to-issue-action@v2.0 with: REPO: ${{ github.repository }} BEFORE: ${{ github.event.before }} SHA: ${{ github.sha }} TOKEN: ${{ secrets.GITHUB_TOKEN }} LABEL: "\"TODO" COMMENT_MARKER: "\"" CLOSE_ISSUES: true id: "todo"
Die wichtige Anpassung für ABAP-Programme ist die Definition des COMMENT_MARKERs mit “. Da das doppelte Anführungszeichen ein Sonderzeichen ist, muss es mit dem Escape-Zeichen ‘\’ erstellt werden.
Die Definition des * als Kommentarmarker hat bei mir zu einem Syntaxfehler im YAML-File geführt. Das doppelte Anführungszeichen finde ich aber eh sinnvoller.
Label TODO
Wechsele in deinem Repository zu der Registerkarte Issues und lege ein Issue an. Auf der rechten Seite kannst du aus den verfügbaren Labels auswählen. TODO existiert noch nicht und du musst es anlegen.
Anwendung
Um die Anlage eines Issues zu prüfen, habe ich ein einfaches Programm erstellt und einen TODO-Kommentar eingefügt:
LOOP AT langs INTO DATA(lang). "TODO use ALV grid for display
WRITE: / lang-sptxt.
ENDLOOP.
Beim Einchecken mit abapGit wird auf das Ereignis push reagiert und der Workflow startet:
Die Verarbeitung dauert etwa eine Minute. Danach ist das Issue in der Registerkarte Issues vorhanden:
Features
In der Action TODO to Issue Action gibt es noch ein paar zusätzliche Features, die sehr interessant sind:
Closing issues
Wenn das Label CLOSE_ISSUES auf TRUE gesetzt wird, dann erkennt die Action, wenn ein TODO aus dem Quelltext entfernt wurde. Was will man mehr?
Multiline Todos
Mit mehrzeiligen Kommentaren kann ein Issue mit einer Beschreibung angelegt werden:
"TODO Come up with a more imaginative greeting "Everyone uses hello world and it's boring.
Dynamic Labels
Fügt man dem TODO-Kommentar das Schlüsselwort labels: voran, dann kann man zusätzliche Tags (Labels) mitgeben:
labels: enhancement, help wanted
Fazit
Ich finde, dass das Feature TODO to Action Issue extrem hilfreich ist. Die Verwaltung funktioniert nach ersten Tests sehr gut. Im Issue selbst ist gut erkenntlich, in welchem Zusammenhang das todo steht. Ein direkter Link zum Sourcecode ist ebenfalls vorhanden. Auch das Löschen von Todos funktioniert gut. Änderungen im Quelltext erzeugen keine doppelten Issues. Wenn ein Issue geschlossen wurde, wird es erneut angelegt, sobald ein Issue mit dem gleichen Text wieder auftaucht.
Viel Spaß beim Verwaltungen deiner Projekte mit Issues!
- 7. December: Excel Racing Simulation – Root Vole Race - 7. Dezember 2024
- 5. December: ABAPConf - 5. Dezember 2024
- 4. December: Only a lazy developer is a good developer - 4. Dezember 2024